package com.jrx.anytxn.transaction.dto.loan;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 账单分期关联关系响应数据
 *
 * @author yf
 * date 2020/4/26 0026
 * @version V1.0
 **/
public class TlLoanStagingMappingRes implements Serializable {

    /**
     * 主键
     * 表字段:id
     */
    private Long id;

    /**
     * 机构号
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 租戶id
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 渠道id
     * 表字段:channel
     */
    private String channel;

    /**
     * 客户id
     * 表字段:customer_id
     */
    private String customerId;

    /**
     * 账单分期订单号
     * 表字段:staging_loan_id
     */
    private String stagingLoanId;

    /**
     * 账单分期总金额
     * 表字段:loan_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal loanAmount;

    /**
     * 业务日期
     * 表字段:business_date
     */
    private Date businessDate;

    /**
     * 总期数
     * 表字段:total_tenor
     */
    private Integer totalTenor;

    /**
     * 原订单号
     * 表字段:original_loan_id
     */
    private String originalLoanId;

    /**
     * 原订单余额
     * 表字段:original_loan_Aomount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal originalLoanAomount;

    /**
     * 原订单分期金额
     * 表字段:staging_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingAmount;

    /**
     * 原订单分期本金
     * 表字段:staging_principal_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingPrincipalAmount;

    /**
     * 原订单分期利息
     * 表字段:staging_interest_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingInterestAmount;

    /**
     * 原订单分期费用
     * 表字段:staging_fee_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingFeeAmount;

    /**
     * 原订单分期罚息
     * 表字段:staging_penalty_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingPenaltyAmount;

    /**
     * 原订单分期复利
     * 表字段:staging_compound_amount
     */
    @JsonSerialize(using= ToStringSerializer.class)
    private BigDecimal stagingCompoundAmount;

    /**
     * 分期状态 S-成功 F-失败 D-待分期
     * 表字段:sum_status
     */
    private String sumStatus;

    /**
     * 创建时间
     * 表字段:create_time
     */
    private Date createTime;

    /**
     * 最后更新时间
     * 表字段:update_time
     */
    private Date updateTime;

    /**
     * 灰度版本（P生产  G灰度）
     * 表字段:gray_version
     */
    private String grayVersion;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getStagingLoanId() {
        return stagingLoanId;
    }

    public void setStagingLoanId(String stagingLoanId) {
        this.stagingLoanId = stagingLoanId;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public Date getBusinessDate() {
        return businessDate;
    }

    public void setBusinessDate(Date businessDate) {
        this.businessDate = businessDate;
    }

    public Integer getTotalTenor() {
        return totalTenor;
    }

    public void setTotalTenor(Integer totalTenor) {
        this.totalTenor = totalTenor;
    }

    public String getOriginalLoanId() {
        return originalLoanId;
    }

    public void setOriginalLoanId(String originalLoanId) {
        this.originalLoanId = originalLoanId;
    }

    public BigDecimal getOriginalLoanAomount() {
        return originalLoanAomount;
    }

    public void setOriginalLoanAomount(BigDecimal originalLoanAomount) {
        this.originalLoanAomount = originalLoanAomount;
    }

    public BigDecimal getStagingAmount() {
        return stagingAmount;
    }

    public void setStagingAmount(BigDecimal stagingAmount) {
        this.stagingAmount = stagingAmount;
    }

    public BigDecimal getStagingPrincipalAmount() {
        return stagingPrincipalAmount;
    }

    public void setStagingPrincipalAmount(BigDecimal stagingPrincipalAmount) {
        this.stagingPrincipalAmount = stagingPrincipalAmount;
    }

    public BigDecimal getStagingInterestAmount() {
        return stagingInterestAmount;
    }

    public void setStagingInterestAmount(BigDecimal stagingInterestAmount) {
        this.stagingInterestAmount = stagingInterestAmount;
    }

    public BigDecimal getStagingFeeAmount() {
        return stagingFeeAmount;
    }

    public void setStagingFeeAmount(BigDecimal stagingFeeAmount) {
        this.stagingFeeAmount = stagingFeeAmount;
    }

    public BigDecimal getStagingPenaltyAmount() {
        return stagingPenaltyAmount;
    }

    public void setStagingPenaltyAmount(BigDecimal stagingPenaltyAmount) {
        this.stagingPenaltyAmount = stagingPenaltyAmount;
    }

    public BigDecimal getStagingCompoundAmount() {
        return stagingCompoundAmount;
    }

    public void setStagingCompoundAmount(BigDecimal stagingCompoundAmount) {
        this.stagingCompoundAmount = stagingCompoundAmount;
    }

    public String getSumStatus() {
        return sumStatus;
    }

    public void setSumStatus(String sumStatus) {
        this.sumStatus = sumStatus;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getGrayVersion() {
        return grayVersion;
    }

    public void setGrayVersion(String grayVersion) {
        this.grayVersion = grayVersion;
    }
}
